#include<bits/stdc++.h>
#define x first
#define y second
#define int long long
#define pb push_back
using namespace std;
typedef pair<int,int>PII;
const int N=5e5+5,M=1e6+5,INF=998244353;
int n,m,k,pos,cnt,a[N];
set<int>s[N];
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
void solve()
{
cin>>n>>m;
map<set<int>,int>mp;
for(int i=1;i<=n;i++)
{
cin>>a[i];
s[i].clear();
}
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
s[b].insert(a);
}
int ans=0;
for(int i=1;i<=n;i++)
if(s[i].size())mp[s[i]]+=a[i];
for(auto now:mp)
{
if(ans==0)ans=now.y;
else ans=gcd(ans,now.y);
}
cout<<ans<<'\n';
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int T;cin>>T;
while(T--)
solve();
return 0;
}
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |
1367A - Short Substrings | 87A - Trains |
664A - Complicated GCD | 1635D - Infinite Set |
1462A - Favorite Sequence | 1445B - Elimination |
1656C - Make Equal With Mod | 567A - Lineland Mail |
1553A - Digits Sum | 1359B - New Theatre Square |